﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PlanillaDeCreditos.aspx.cs" MasterPageFile="MasterPage.Master" Inherits="Web.Pages.PlanillaDeCreditos" %>
<%@ Import Namespace="Web.Helpers.Documents.Spreadsheets.Enums" %>

<asp:Content ID="mainContent" ContentPlaceHolderID="MainContent" runat="Server" >
    
    <link href="Styles/Planilla.css" rel="stylesheet" type="text/css" />

    <!--$(document).ready-->  
    <script type="text/javascript" >

        var _cantidadItemsCreados = 0;

        var controles = { General: {}, Planilla: { Items: {} } };
        /* General */
        controles.General.Proyecto              = "<%= selPlanilla_Proyecto.ClientID %>";
        controles.General.Guion                 = "selPlanilla_Guion";
        controles.General.LogoAAA               = "imgLogoAAA";eliminarFilasPlanillaItem
        controles.General.btnGenerarPlanilla    = "btnGenerarPlanilla";
        controles.General.hdnPayRollDirectory   = "<%= hdnPayRollDirectory.ClientID %>";

        /* Items */
        controles.Planilla.Items =
        {
            IdTabla : "tblPlanilla_Items",
            btnAgregar: "btnPlanilla_Item_Agregar",
            btnEliminar: "btnPlanilla_Item_Eliminar_",
            Proyecto: "txtPlanilla_Item_Proyecto_",
            NroEpisodio: "txtPlanilla_Item_NroEpisodio_",
            Guion: "txtPlanilla_Item_Guion_",
            Actor: "txtPlanilla_Item_Actor_",
            NroMatricula: "txtPlanilla_Item_NroMatricula_",
            Personaje: "txtPlanilla_Item_Personaje_",
            Telefono: "txtPlanilla_Item_Telefono_",
            Email: "txtPlanilla_Item_Email_"
        };

        $(document).ready(function()
        {
            procesarParametros();
            cargarPagina_PlanillaDeCreditos();
        });
        function procesarParametros()
        {
            Framework.Page.Parameters.parseQueryString();
        }
        function cargarPagina_PlanillaDeCreditos()
        {
            Site.Messages.showLoadingMessage();

            Site.Page.setTitle("Planilla de Créditos");

            var width = 290;
            var height = 90;
            var imgLogo = $("#" + controles.General.LogoAAA);
                imgLogo.width(width).height(height);
            imgLogo.parent().css("min-width", imgLogo.outerWidth());

            $("#" + controles.Planilla.Items.btnAgregar).click(function()
            {
                crearFilaPlanillaItem(null, _cantidadItemsCreados);
            });
            $("#" + controles.General.btnGenerarPlanilla).click(function () { generarPlanilla(); });

            Helpers.MultiSelectHelper.configure("#" + controles.General.Proyecto, false);
            Helpers.MultiSelectHelper.bindOnChange("#" + controles.General.Proyecto, onProyecto_Change);
            configurarListaGuion();

            Site.Messages.hideLoadingMessage();
        }
        function configurarListaGuion()
        {
            Helpers.MultiSelectHelper.configure("#" + controles.General.Guion, true);
            Helpers.MultiSelectHelper.bindOnChange("#" + controles.General.Guion, onGuion_Change);
            $("#" + controles.General.Guion).multiselect
            ({
                checkAll: function ()
                {
                    var idsGuiones = Helpers.MultiSelectHelper.getSelected($(this).attr("id"));
                    //$(this).multiselect("close"); //Helpers.MultiSelectHelper.close($(this).attr("id"));
                    Helpers.MultiSelectHelper.close(controles.General.Guion);
                    obtenerActoresGuion(idsGuiones);
                },
                uncheckAll: function () {
                    limpiarDatosPlanillaItems();
                },
            });
        }
        function onProyecto_Change(seleccionado, valor, texto)
        {
            if ( seleccionado == true )
            {
                limpiarDatosPlanilla();
                limpiarDatosPlanillaItems();

                Helpers.SelectListHelper.removeAllOptions( controles.General.Guion );
                
                var idProyecto = valor;
                obtenerGuionesPendientesDePago(idProyecto);
            }
        }
        function onGuion_Change(seleccionado, valor, texto)
        {
            var idGuion = valor;
            if ( seleccionado == true )
            {
                limpiarDatosPlanilla();
                obtenerActoresGuion( [ idGuion ] );
            }
            else
            {
                limpiarDatosPlanillaItems( idGuion );
            }
        }
        function obtenerGuionesPendientesDePago(idProyecto)
        {
            Site.Messages.showLoadingMessage();
            var parametros = { idProyecto: idProyecto }
            Helpers.AJAXHelper.invoke("obtenerGuionesPendientesDePago", JSON.stringify(parametros), obtenerGuionesPendientesDePago_Respuesta, null);
        }
        function obtenerGuionesPendientesDePago_Respuesta(datos)
        {
            Site.Messages.hideLoadingMessage();
            var respuestaInfo = jQuery.parseJSON(datos.d);
            if (respuestaInfo.Resultado)
            {
                var options = Helpers.SelectListHelper.formatForSelectList(respuestaInfo.Valor, "Id", "Texto");
                Helpers.SelectListHelper.fillSelectList(controles.General.Guion, options, null, true);
                configurarListaGuion();
            }
            else
            {
                mostrarNotificacion(_notifications.error, respuestaInfo.Mensaje, true);
            }
        }
        function obtenerActoresGuion(idsGuiones)
        {
            Site.Messages.showLoadingMessage();
            var parametros = { idsGuiones: idsGuiones };
            Helpers.AJAXHelper.invoke("obtenerPlanillaDeCreditos", JSON.stringify(parametros), obtenerActoresGuion_Respuesta, null);
        }
        function obtenerActoresGuion_Respuesta(datos)
        {
            Site.Messages.hideLoadingMessage();

            var respuestaInfo = jQuery.parseJSON(datos.d);
            if ( respuestaInfo.Resultado )
                cargarDatosPlanillaItems( respuestaInfo.Valor );
            else
                mostrarNotificacion( _notifications.error, respuestaInfo.Mensaje, true );
        }
        function cargarDatosPlanillaItems(usuariosInfo)
        {
            for(var i=0; i < usuariosInfo.length; i++)
            {
                var item = usuariosInfo[i].Valor;
                var idFila = crearFilaPlanillaItem(item.IdGuion, i);

                $("#" + controles.Planilla.Items.Proyecto + idFila).val( Helpers.MultiSelectHelper.getFirstSelectedText( controles.General.Proyecto ) );
                $("#" + controles.Planilla.Items.NroEpisodio + idFila).val( item.NroEpisodio );
                $("#" + controles.Planilla.Items.Guion + idFila).val( item.Guion );
                $("#" + controles.Planilla.Items.Actor + idFila).val( item.Apellido + ", " + item.Nombre );
                $("#" + controles.Planilla.Items.NroMatricula + idFila).val( item.NroMatricula );
                $("#" + controles.Planilla.Items.Personaje + idFila).val( item.Personaje );
                $("#" + controles.Planilla.Items.Telefono + idFila).val( item.Telefono );
                $("#" + controles.Planilla.Items.Email + idFila).val( item.Email );
            }
        }
        function limpiarDatosPlanilla()
        {
        }
        function limpiarDatosPlanillaItems(idGuion)
        {
            eliminarFilasPlanillaItem(idGuion);
        }
        function eliminarFilaPlanillaItem(id)
        {
            $("#filaPlanilla_Item_" + id).remove();
            
            mostrarNotificacion(_notifications.info, "Se eliminó un ítem", false);
        }
        function eliminarFilasPlanillaItem(idGuion)
        {
            var filas = getTableRows(controles.Planilla.Items.IdTabla, !isEmpty(idGuion) ? 'idGuion="' + idGuion + '"' : '');
                filas.remove("");

            filas.remove("");
        }
        function obtenerIdFila(idGuion, nroFila)
        {
            return "{0}_{1}".format(idGuion, nroFila);
        }
        function crearFilaPlanillaItem(idGuion, nroFila) 
        {
            if ( isEmpty(idGuion) )
                idGuion = Constants.Entities.DefaultId;

            var id = obtenerIdFila(idGuion, nroFila);

            var fila  = '';
                fila += '<td align="center"><div id="' + controles.Planilla.Items.btnEliminar + id + '" class="botonAccion btnPlanilla_Item_Eliminar" style="width:70px;" ><img src="Images/16x16/remover.png" alt="Eliminar ítem" /><label>Eliminar</label></div></td>';
                fila += '<td><input id="' + controles.Planilla.Items.Proyecto + id + '" type="text" value="" class="txtValor" /></td>';
                fila += '<td><input id="' + controles.Planilla.Items.NroEpisodio + id + '" type="text" value="" class="txtValor" /></td>';
                fila += '<td><input id="' + controles.Planilla.Items.Guion + id + '" type="text" value="" class="txtValor" /></td>';
                fila += '<td><input id="' + controles.Planilla.Items.Actor + id + '" type="text" value="" class="txtValor" ></td>';
                fila += '<td><input id="' + controles.Planilla.Items.NroMatricula + id + '" type="text" value="" class="txtValor" ></td>';    
                fila += '<td><input id="' + controles.Planilla.Items.Personaje + id + '" type="text" value="" class="txtValor" ></td>';
                fila += '<td><input id="' + controles.Planilla.Items.Telefono + id + '" type="text" value="" class="txtValor" /></td>';
                fila += '<td><input id="' + controles.Planilla.Items.Email + id + '" type="text" value="" class="txtValor" ></td>';
                fila  = '<tr id="filaPlanilla_Item_' + id + '" idGuion="' + idGuion + '" class="filaPlanilla_Item" >' + fila + '</tr>';

            $("#" + controles.Planilla.Items.IdTabla).append( fila );

            activarControlesFilaPlanilla_Item(id);

            _cantidadItemsCreados++;

            return id;
        }    
        function activarControlesFilaPlanilla_Item(id)
        {
            $("#" + controles.Planilla.Items.btnEliminar + id).click( function() { eliminarFilaPlanillaItem(id); } );

            addPlaceHolder(controles.Planilla.Items.Proyecto + id, "PROYECTO");
            addPlaceHolder(controles.Planilla.Items.NroEpisodio + id, "EP.");
            addPlaceHolder(controles.Planilla.Items.Guion + id, "GUIÓN");
            addPlaceHolder(controles.Planilla.Items.Actor + id, "ACTOR");
            addPlaceHolder(controles.Planilla.Items.NroMatricula + id, "MATRÍCULA");
            addPlaceHolder(controles.Planilla.Items.Personaje + id, "PERSONAJE");
            addPlaceHolder(controles.Planilla.Items.Telefono + id, "TELÉFONO");
            addPlaceHolder(controles.Planilla.Items.Email + id, "E-MAIL");
        }
    </script>

    <!-- Generar Planilla -->
    <script type="text/javascript" >
        function generarPlanilla()
        {
            var planilla =
            {
                infoPlanilla        : obtenerObjetoPlanilla(),
                infoPlanillaItems   : obtenerObjetoPlanillaItems()
            }
            
            if ( !validarGenerarPlanilla(planilla) )
                return;

            Site.Messages.showLoadingMessage();
            Helpers.AJAXHelper.invoke("generarPlanilla", planilla, generarPlanilla_Respuesta, null);
        }
        function validarGenerarPlanilla(planilla)
        {
            var errores = [];

            validarDatosPlanilla_Items(planilla.infoPlanillaItems, errores);

            if (errores.length > 0)
            {
                Framework.Effects.scrollTo(errores[0], null, 1000);
                return false;
            }
            else
            {
                return true;
            }
        }
        function validarDatosPlanilla_Items(infoPlanillaItems, errores)
        {
            for (var i = 0; i < infoPlanillaItems.length; i++)
            {
                var item    = infoPlanillaItems[i];
                var idFila  = item.IdFila;

                if (item.Proyecto.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Proyecto + idFila), errores);
                if (item.NroEpisodio.length == 0)
                    registrarError($("#" + controles.Planilla.Items.NroEpisodio + idFila), errores);
                if (item.Guion.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Guion + idFila), errores);
                if (item.Actor.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Actor + idFila), errores);
                if (item.NroMatricula.length == 0)
                    registrarError($("#" + controles.Planilla.Items.NroMatricula + idFila), errores);
                if (item.Personaje.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Personaje + idFila), errores);
                if (item.Telefono.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Telefono + idFila), errores);
                if (item.Email.length == 0)
                    registrarError($("#" + controles.Planilla.Items.Email + idFila), errores);
            }
        }
        function generarPlanilla_Respuesta(datos)
        {
            Site.Messages.hideLoadingMessage();
            var respuestaInfo = jQuery.parseJSON(datos.d);
            if ( respuestaInfo.Resultado )
            {
                mostrarDescargaPlanilla(respuestaInfo.Valor, respuestaInfo.Mensaje);
            }
            else
            {
                mostrarNotificacion( _notifications.error, respuestaInfo.Mensaje, true );
            }
        }
        function mostrarDescargaPlanilla(filename, message)
        {
            var directory = $("#" + controles.General.hdnPayRollDirectory).val();
            //var href = directory + filename;

            var linkDescarga = "<a href='" + filename + "' target='_blank' style='color:greenyellow; font-size:12px;' >Descargar</a>";
            var linkRepositorio = "<a href='" + directory + "' target='_blank' style='color:greenyellow; font-size:12px' >Ir a repositorio</a>";
            var mensaje = "<div>{0}</div><div><span>{1} | {2}</span></div>".format(message, linkDescarga, linkRepositorio);
            //var mensaje = "<div>{0}</div><div><span>{1}</span></div>".format(message, linkDescarga);
            mostrarNotificacion( _notifications.success, mensaje, true );

            var btnGenerarPlanilla = $("#" + controles.General.btnGenerarPlanilla);
                btnGenerarPlanilla.css("opacity", "0.5");
                btnGenerarPlanilla.off('click');            
        }
        function obtenerObjetoPlanilla()
        {
            var planilla =
                {
                    TipoPlanilla    : '<%= TiposPlanilla.Credito %>',
                    Titulo          : Helpers.MultiSelectHelper.getFirstSelectedText(controles.General.Proyecto)
                }
            return planilla;
        }
        function obtenerObjetoPlanillaItems()
        {
            var planillaItems = [];
            var filas = $("#" + controles.Planilla.Items.IdTabla).find("tbody > tr");
            for(var i=0; i < filas.length; i++)
            {
                var id = filas[i].id.replace("filaPlanilla_Item_", "");
                var idGuion = $(filas[i]).attr("idGuion");
                var item =
                {
                    IdFila          : id,
                    Proyecto        : $("#" + controles.Planilla.Items.Proyecto + id).val(),
                    NroEpisodio     : $("#" + controles.Planilla.Items.NroEpisodio + id).val(),
                    //IdGuion     : idGuion,
                    Guion           : $("#" + controles.Planilla.Items.Guion + id).val(),
                    Actor           : $("#" + controles.Planilla.Items.Actor + id).val(),
                    NroMatricula    : $("#" + controles.Planilla.Items.NroMatricula + id).val(),
                    Personaje       : $("#" + controles.Planilla.Items.Personaje + id).val(),
                    Telefono        : $("#" + controles.Planilla.Items.Telefono + id).val(),
                    Email           : $("#" + controles.Planilla.Items.Email + id).val()                
                }
                planillaItems[i] = item;
            }
            return planillaItems;
        }
    </script>

    <!--HTML-->
    <div id="content" style="margin:0 auto; width:90%;" >

        <!-- BOTONERA -->
        <div style="margin-top:20px; margin-bottom:20px;" ></div>
        <!-- Fin de [BOTONERA] -->
        
        <input id="hdnPayRollDirectory" type="hidden" runat="server" />

        <!-- ENCABEZADO -->
        <div id="pnlPlanilla_Encabezado" style="float:left; width:1125px" >
            <table id="tblPlanilla_Encabezado" border="1" width="100%" class="default sin-borde" >
                <!--<caption></caption>-->
                <colgroup>
                    <col width="25%" />
                    <col width="50%" />
                    <col width="25%" />
                </colgroup>
                <tr>
                    <td class="sin-borde" >
                        <img id="imgLogoAAA" src="Images/PlanillaDePago/AsociacionArgentinaActores.jpg" alt="Asociación Argentina de Actores" style="display:none" />
                    </td>
                    <td align="center" class="sin-borde" >
                        <div style="width:90%" >
                            <table id="tblPlanilla_Encabezado_Filtro" border="1" width="100%" class="default sin-borde" >
                                <colgroup>
                                    <col width="30%" />
                                    <col width="70%" />
                                </colgroup>
                                <tr>
                                    <td class="indent" >
                                        <b><label id="lblPlanilla_Encabezado_Proyecto" >Proyecto:</label></b>
                                    </td>
                                    <td align="center" style="padding:0px !important;" >
                                        <select id="selPlanilla_Proyecto" multiple="true" runat="server" ></select>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="indent" >
                                        <b><label id="lblPlanilla_Encabezado_Guion" >Guión:</label></b>
                                    </td>
                                    <td align="center" style="padding:0px !important;" >
                                        <select id="selPlanilla_Guion" multiple="multiple" ></select>
                                    </td>
                                </tr>
                                <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                </tr>
                            </table>
                        </div>
                    </td>
                    <td class="sin-borde" >
                        <div style="padding-top:5px;" >
                            <label id="lblPlanilla_Encabezado_Linea1" >Planilla De Remuneraciones</label>
                        </div>
                        <div style="padding-top:5px;" >
                            <label id="lblPlanilla_Encabezado_Linea2" >Para ser entregada en la Asociación Argentina de Actores</label>
                        </div>
                        <div style="padding-top:15px;" >
                            <label id="lblPlanilla_Encabezado_Linea3" >Rama Televisión</label>
                        </div>
                    </td>
                </tr>
            </table>
        </div>

        <!-- ITEMS -->
        <div id="pnlPlanilla_Items" >
            <table id="tblPlanilla_Items" border="1" width="100%" class="default" >
                <!--<caption></caption>-->
                <colgroup>
                    <col width="5%"  /> <!-- Botón Agregar -->
                    <col width="15%" /> <!-- Proyecto -->
                    <col width="5%"  /> <!-- Nro. Episodio -->
                    <col width="13%" /> <!-- Guión -->
                    <col width="12%" /> <!-- Actor -->
                    <col width="8%"  /> <!-- Nro. Matrícula -->
                    <col width="12%" /> <!-- Personaje -->
                    <col width="10%" /> <!-- Teléfono -->
                    <col width="15%" /> <!-- Email -->
                </colgroup>
                <thead>
                    <tr>
                        <th>
                            <div id="btnPlanilla_Item_Agregar" class="botonAccion" style="width:70px;" >
                                <img src="Images/16x16/agregar.png" alt="Agregar ítem" />
                                <label>Agregar</label>
                            </div>
                        </th>
                        <th>Proyecto</th>
                        <th>Nro. Ep.</th>
                        <th>Guión.</th>
                        <th>Actor</th>
                        <th>Nro. Matrícula</th>
                        <th>Personaje</th>
                        <th>Teléfono</th>
                        <th>Email</th>
                    </tr>
                </thead>
            </table>
        </div>

        <!-- Generar Planilla -->
        <div id="pnlPlanilla" >
            <table id="tblPlanilla" border="1" width="100%" class="default" >
                <!--<caption></caption>-->
                <colgroup>
                    <col width="35%" />
                    <col width="30%" />
                    <col width="35%" />
                </colgroup>
                <tr>
                    <td colspan="3" align="center" >
                        <div id="btnGenerarPlanilla" class="boton" >
                            <img src="Images/pdf.png" alt="Generar Planilla" />
                            <label>Generar Planilla</label>
                        </div>
                    </td>
                </tr>
            </table>
        </div>

    </div>

</asp:Content>